1. Field of the Invention
The present invention relates generally to storage device controllers, and more particularly, to streamlining data flow in storage device controllers.
2. Background
Conventional computer systems typically include several functional components. These components may include a central processing unit (CPU), main memory, input/output (“I/O”) devices, and streaming storage devices (for example, tape drives) (referred to herein as “storage device”). In conventional systems, the main memory is coupled to the CPU via a system bus or a local memory bus. The main memory is used to provide the CPU access to data and/or program information that is stored in main memory at execution time. Typically, the main memory is composed of random access memory (RAM) circuits. A computer system with the CPU and main memory is often referred to as a host system.
The storage device is coupled to the host system via a controller that handles complex details of interfacing the storage devices to the host system. Communications between the host system and the controller is usually provided using one of a variety of standard I/O bus interfaces.
Typically, when data is read from a storage device, a host system sends a read command to the controller, which stores the read command into the buffer memory. Data is read from the device and stored in the buffer memory.
In storage devices, data is stored in blocks of varying sizes and non-contiguous segments. However, data, when sent to the host system must be contiguous. Therefore, data, after being read should be assembled efficiently, so that, to a host system it appears contiguous. Conventional systems do not perform this function efficiently.
Therefore, there is a need for a system to assemble data so that when it is sent to the host it is contiguous.